#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行，
# 第2行注释表示.py文件本身使用标准UTF-8编码：
import os

print("#############对文件和目录进行操作#############")
# Python内置的os模块也可以直接调用操作系统提供的接口函数。
print(os.name)  # 如果是posix，说明系统是Linux、Unix或Mac OS X，如果是nt，就是Windows系统。
# print(os.uname)#如果要获取更详细的信息，注意uname()函数在Windows上不提供
print(os.environ)  # 是一个dict类型
print(os.environ.get("CLASSPATH"))
# 操作文件和目录的函数一部分放在os模块中，一部分放在os.path模块中，这一点要注意一下。查看、创建和删除目录可以这么调用：
# 查看当前路径的绝对路径
print(os.path.abspath('.'))  # 查看当前路径的绝对路径
# 在当前路径创建一个文件夹
print("#############创建文件夹，删除文件夹#############")
# 把两个路径合成一个时，不要直接拼字符串，而要通过os.path.join()函数，这样可以正确处理不同操作系统的路径分隔符
print(os.path.join(os.path.abspath("."), "testdir"))
os.makedirs("E:\python\\10io_programming\\testdir")
os.rmdir("E:\python\\10io_programming\\testdir")
print("#############拆分路径#############")
print(os.path.split("E:\python\\10io_programming\\utf-8.txt"))
print(os.path.splitext("E:\python\\10io_programming\\utf-8.txt"))
# 删除文件
# os.remove()
# 重命名文件
# os.rename()
# 复制文件
# 幸运的是shutil模块提供了copyfile()的函数，你还可以在shutil模块中找到很多实用函数，它们可以看做是os模块的补充。
# 比如我们要列出当前目录下的所有目录
print("#############列出当前目录上一级所有目录#############")
print(os.path.abspath("../"))
print(os.listdir('../'))
print([x for x in os.listdir('../') if os.path.isdir(os.path.join(os.path.abspath("../"), x))])
print("#############列出当前目录下的所有.txt文件#############")
print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.txt'])


# 编写一个程序，能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件，并打印出相对路径
def findfile(path, str):
    for x in os.listdir(path):
        if os.path.isdir(x):
            findfile(x, str)
        elif x.find(str) != -1:
            print(os.path.join(path, x))


findfile('E:\\', 'o')
